package controllerActions;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.ResourceBundle;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import beans.Aktie;
import beans.Auftrag;
import beans.MeinPortfolio;
import connection.DBConnection;
import dao.AktieDAO;
import dao.AuftragDAO;
import dao.BenutzerDAO;
import dao.MeinPortfolioDAO;

public class DividendeAuschuetten {
	public void dividendeAuschuetten(HttpSession session,
			HttpServletRequest request, HttpServletResponse response,
			DBConnection dbc) throws SQLException {
		
		ResourceBundle properties = ResourceBundle.getBundle("controller.string");
		ArrayList<Aktie> aktienArray = new ArrayList<Aktie>();
		ArrayList<MeinPortfolio> portfolio = new ArrayList<MeinPortfolio>();
		ArrayList<Auftrag> auftrag = new ArrayList<Auftrag>();
		AktieDAO aktieDAO = new AktieDAO();
		MeinPortfolioDAO maDAO = new MeinPortfolioDAO();
		AuftragDAO auftragDAO = new AuftragDAO();
		BenutzerDAO benutzerDAO = new BenutzerDAO();
		
		// Update der DivFidende in Aktie.
		aktieDAO.useConnection(dbc.getDBInfos());
		aktienArray = aktieDAO.selectAktien();
		aktieDAO.updateDividendeVonAktie(aktienArray);

		// Rechnen der Dividende bei Portfolio
		maDAO.useConnection(dbc.getDBInfos());
		portfolio = maDAO.findPortfolioFuerDividende();
		for (MeinPortfolio p : portfolio) {
			int id = p.getBenutzer_FK();
			int kontostand = p.getKontostand();
			int anzahl = p.getAnzahl();
			int dividende = p.getDividende();
			kontostand = (anzahl * dividende) + kontostand;

			benutzerDAO.useConnection(dbc.getDBInfos());
			benutzerDAO.updateKontostand(kontostand, id);

		}

		// Rechnen der Dividende bei Auftrag
		auftragDAO.useConnection(dbc.getDBInfos());
		auftrag = auftragDAO.selectAuftraegeFuerDividende();
		for (Auftrag a : auftrag) {
			int id = a.getBenutzer_FK();
			int kontostand = a.getKontostand();
			int anzahl = a.getAnzahl();
			int dividende = a.getDividende();

			kontostand = (anzahl * dividende) + kontostand;

			benutzerDAO.useConnection(dbc.getDBInfos());
			benutzerDAO.updateKontostand(kontostand, id);
			session.putValue("meldung", properties.getString("meldung2"));
			
		}

	}
}
